unit uHashClasses;

interface

type
  TRemoveNotify = procedure (p: Pointer) of object;

  TStringHash = class
  private
    FRemoveEvent: TRemoveNotify;
  public
    function Valueof(const key: string): Pointer;
    procedure Add(const key: string; value: Pointer);
    procedure Remove(const key: string);
    procedure Clear;

    property RemoveEvent: TRemoveNotify read FRemoveEvent;
  end;

  TIntegerHash = class
  private
    FRemoveEvent: TRemoveNotify;
  public
    function Valueof(key: Integer): Pointer;
    procedure Add(key: Integer; value: Pointer);
    procedure Remove(key: Integer);
    procedure Clear;

    property RemoveEvent: TRemoveNotify read FRemoveEvent;
  end;

implementation

{ TStringHash }

procedure TStringHash.Add(const key: string; value: Pointer);
begin

end;

procedure TStringHash.Clear;
begin

end;

procedure TStringHash.Remove(const key: string);
begin

end;

function TStringHash.Valueof(const key: string): Pointer;
begin

end;

{ TIntegerHash }

procedure TIntegerHash.Add(key: Integer; value: Pointer);
begin

end;

procedure TIntegerHash.Clear;
begin

end;

procedure TIntegerHash.Remove(key: Integer);
begin

end;

function TIntegerHash.Valueof(key: Integer): Pointer;
begin

end;

end.
